package modele.Unite;


import controleur.Controleur;
import controleur.MonTimer;
import controleur.TacheDeplacementEtConstruction;
import modele.Direction;
import modele.Joueur;
import modele.Position;
import modele.Batiment.Batiment;
import modele.Map;

public class Ouvrier extends Unite {
	private static final long serialVersionUID = 4545704689996494392L;

	protected boolean enTrainDeConstruire;
	public boolean estEnTrainDeConstruire() {
		return enTrainDeConstruire;
	}


	private static final int vitesseDeplacementInitiale = 3;
	
	static public final int coutCreationOrInitial = 50;
	static public final int coutCreationElixirInitial = 50;
	

	public Ouvrier(Position position, Direction direction,Joueur joueur) {
		super(vitesseDeplacementInitiale, position, direction, coutCreationOrInitial, coutCreationElixirInitial, joueur);
		this.enTrainDeConstruire = false;
		
	}
	

	/**
	 * déplace le joueur jusqu'au point de construction, puis lui fait construire le bâtiment
	 * @param joueur joueur qui doit construire (this probablement)
	 * @param batiment sa position doit être initialisée
	 */
	public void construireBatiment(Controleur controleur, Joueur joueur, Batiment batiment, Map map) {
		
		enTrainDeConstruire = true;
		this.listeDirection = map.chercherCheminSansDerniereCase(this.position, batiment.getPosition(), 50);//1000 peut être changée
		this.positionArrivee = batiment.getPosition();
		
		//maintenant il faut lancer le timer
		new MonTimer(new TacheDeplacementEtConstruction(controleur, Controleur.tempsDAttenteMillisecondesDeplacement, this, map, joueur, batiment),Controleur.tempsDAttenteMillisecondesDeplacement);
		
	}
	
	public void constructionFinie()
	{
		this.enTrainDeConstruire = false;
	}
	
	
	public void actionApresCreation(Joueur joueur)
	{
		this.joueur = joueur;
	}
	
}